﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;

// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236

namespace Pass
{
    public sealed partial class Cadastro : UserControl
    {

        Popup _popup;
        MainPage _mainpage;
        Popup _popupAviso;
        

        public Cadastro(Popup popup, MainPage mainpage)
        {
            this.InitializeComponent();
            _popup = popup;
            _mainpage = mainpage;
            _popup.Opened += _popup_Opened;
        }

        public void backButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            // TODO Normal	incomplete:Add

            _popup.IsOpen = false;
        }

        private  async void Save()
        {
            List<Recursos.Senha> _ListaSenha = new List<Recursos.Senha>();
            BitmapImage bi = new BitmapImage(new Uri("ms-appx:///Assets/StoreLogo.png"));
            _mainpage.AddCompoSenha(bi, txtTitulo.Text, txtObs.Text);
            string _arquivo = "senha.xml";
       
            Recursos.Controle controle = new Recursos.Controle("senha.xml");
            XmlSerializer serializer = new XmlSerializer(typeof(List<Recursos.Senha>));
            StorageFolder folder = ApplicationData.Current.LocalFolder;
            Stream file = await folder.OpenStreamForReadAsync(_arquivo);
            file.Position = 0;
            _ListaSenha = (List<Recursos.Senha>)serializer.Deserialize(file);
            file.Dispose();
            

            Recursos.Senha senha = new Recursos.Senha();
            senha._obs = txtObs.Text;
            senha._Senha =  "teste";
            senha._Titulo = txtTitulo.Text;
            _ListaSenha.Add(senha);

            XmlSerializer serializer2 = new XmlSerializer(typeof(List<Recursos.Senha>));
            StorageFolder folder2 = ApplicationData.Current.LocalFolder;
            StorageFile file2 = await folder.CreateFileAsync(_arquivo, CreationCollisionOption.ReplaceExisting);
            using (IRandomAccessStream writeStream = await file2.OpenAsync(FileAccessMode.ReadWrite))
            {
                serializer.Serialize(writeStream.AsStream(), _ListaSenha);
                writeStream.Dispose();
            }
        }
        private void Button_Click_1(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            ValidaCampos();                       
        }
        /// <summary>
        /// Valida e gerencia campos
        /// </summary>
        private void ValidaCampos()
        {
            List<string> Mensagem = new List<string>();
            Aviso aviso = new Aviso();
            bool Aux = false;

            if (txtTitulo.Text == "")
            {
                Aux = true;
                Mensagem.Add("Digite um titutlo");
            }
            if ((txtSenha1.Password != txtSenha2.Password) || ((txtSenha1.Password == "") && (txtSenha2.Password == "")))
            {
                Aux = true;
                if ((txtSenha1.Password == "") && (txtSenha2.Password == ""))
                {
                    Mensagem.Add("Gigite uma senha");
                }
                else if (txtSenha1.Password == "")
                {
                    Mensagem.Add("Digite a senha");
                }
                else if (txtSenha2.Password == "")
                {
                    Mensagem.Add("Confire a senha a senha");
                }
                else if (txtSenha1.Password != txtSenha2.Password)
                {
                    Mensagem.Add("As senhsa devem ser iguais");
                }
            }

            if (Aux)
            {
                if (_popupAviso == null)
                {
                    _popupAviso = new Popup();
                    _popupAviso.Child = aviso;
                    _popupAviso.VerticalOffset = 210;
                    _popupAviso.HorizontalOffset = 690;
                    _popupAviso.IsOpen = true;
                }
                aviso.GetCaption(Mensagem);
            }

            else
            {
                Save();
                _popup.IsOpen = false;

            }
        }

        void _popup_Opened(object sender, object e)
        {
            this.txtObs.Text = "";
            this.txtSenha1.Password = "";
            this.txtTitulo.Text = "";
        }

        private void txtSenha1_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
        {
            if (_popupAviso != null)
            {
                _popupAviso.IsOpen = false;
            }   
        }
    }
}
